#include <gtest/gtest.h>
#include <gmock/gmock.h>


class Foo {
public:
  int get();
};


class MockFoo : public Foo {
public:

  static_assert( 1, "()" " should be enclosed in parentheses."); 
  static_assert( 1, "()" " should be enclosed in parentheses."); 
  static_assert( std::is_function< ::testing::internal::identity_t<int>( )>::value, "Signature must be a function type, maybe return type contains " "unprotected comma."); 
  static_assert( ::testing::tuple_size<typename ::testing::internal::Function< ::testing::internal::identity_t<int>( )>::ArgumentTuple>::value == 0, "This method does not take " "0" " arguments. Parenthesize all types with unprotected commas."); 
  typename ::testing::internal::Function< ::testing::internal::identity_t<int>( )>::Result get() 
  { 
    gmock00_get_11 .SetOwnerAndName(this, "get"); 
    return gmock00_get_11 .Invoke(); 
  } 
  ::testing::MockSpec< ::testing::internal::identity_t<int>( )> gmock_get( ) 
  { 
    gmock00_get_11.RegisterOwner(this); 
    return gmock00_get_11 .With(); 
  } 
  ::testing::MockSpec< ::testing::internal::identity_t<int>( )> gmock_get( const ::testing::internal::WithoutMatchers&, ::testing::internal::Function< ::testing::internal::identity_t<int>( )>*) const 
  { 
    return ::testing::internal::ThisRefAdjuster< int >::Adjust(*this) .gmock_get(); 
  } 
  mutable ::testing::FunctionMocker< ::testing::internal::identity_t<int>( )> gmock00_get_11;
};


static_assert(sizeof("sample") > 1, "test_suite_name must not be empty"); 
static_assert(sizeof("get") > 1, "test_name must not be empty"); 


class sample_get_Test : public ::testing::Test { 
public: 
  sample_get_Test() = default; 
  ~sample_get_Test() override = default; 
  sample_get_Test(sample_get_Test const&) = delete; 
  sample_get_Test& operator=(sample_get_Test const&) = delete; 
  sample_get_Test(sample_get_Test&&) noexcept = delete; 
  sample_get_Test& operator=(sample_get_Test&&) noexcept = delete; 
private: 
  void TestBody() override; 
  static ::testing::TestInfo* const test_info_ __attribute__ ((unused)); 
}; 


::testing::TestInfo* const sample_get_Test::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( 
  "sample", "get", nullptr, nullptr, 
  ::testing::internal::CodeLocation("ex.cc", 14), 
  (::testing::internal::GetTestTypeId()), 
  ::testing::internal::SuiteApiResolver< ::testing::Test>::GetSetUpCaseOrSuite("ex.cc", 14), 
  ::testing::internal::SuiteApiResolver< ::testing::Test>::GetTearDownCaseOrSuite("ex.cc", 14), 
  new ::testing::internal::TestFactoryImpl<sample_get_Test>
  ); 


void sample_get_Test::TestBody()
{
	MockFoo foo;

	((foo).gmock_get())(::testing::internal::GetWithoutMatchers(), nullptr) .InternalExpectedAt("ex.cc", 17, "foo", "get()")
		.WillOnce(testing::Return(1));

	switch (0) 
	case 0: 
	default: 
		if (const ::testing::AssertionResult gtest_ar = (::testing::internal::EqHelper::Compare("1", "foo.get()", 1, foo.get()))) 
			;
		else 
			::testing::internal::AssertHelper(::testing::TestPartResult::kNonFatalFailure, "ex.cc", 19, gtest_ar.failure_message()) = ::testing::Message();
}


int main()
{
	::testing::InitGoogleTest();
	return RUN_ALL_TESTS();
}
